home *** CD-ROM | disk | FTP | other *** search
/ EarthLink Network ExpressNet Suite / EarthLink Network ExpressNet Suite.iso / pc / win / srfwatch / win31 / surf.ms_ / surf.ms
Text File  |  1995-08-18  |  12KB  |  492 lines

  1. '**************************************************************************
  2. '*                       SurfWatch Setup
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST BADVERIFY     = 200
  13. CONST LEGALSTUFF    = 300
  14. CONST EXITFAILURE   = 400
  15. CONST REMOVER       = 500
  16. CONST EXITQUIT      = 600
  17. CONST EXITSUCCESS   = 700
  18. CONST OPTIONS       = 800
  19. CONST REMOVECANCEL  = 900
  20. CONST EXITUISUCCESS = 1000
  21. CONST GETPASSWORD   = 1100
  22. CONST CONFIRMPSSWRD = 1200
  23. CONST GETNAME       = 1300
  24. CONST EXITNOCHANGE  = 1400
  25. CONST SELECTDRIVE   = 1500
  26. CONST WINSOCKLOAD   = 1600
  27. CONST BADPASSWORD   = 6000
  28.  
  29. ''following were taken from windows.h. &H means they're hex
  30. CONST WS_VISIBLE=&H10000000
  31. CONST WS_BORDER =&H00800000
  32. CONST WS_CLIPCHILDREN =&H02000000
  33. CONST GWL_STYLE =-16
  34. CONST SW_SHOWMAXIMIZED=3
  35.  
  36. DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  37. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  38. DECLARE FUNCTION WinExec LIB "kernel.exe" (szCmdLine$, wFlags%) AS INTEGER
  39. DECLARE FUNCTION encrypt LIB "mscuistf.dll" (sz$) AS INTEGER
  40. DECLARE FUNCTION SetFileAttr LIB "mscuistf.dll" (szFileName$,wAttr%) AS INTEGER
  41. DECLARE FUNCTION SetWildAttr LIB "mscuistf.dll" (szFileName$,wAttr%) AS INTEGER
  42. DECLARE FUNCTION KSW LIB "mscuistf.dll" () AS INTEGER
  43. DECLARE FUNCTION KSU LIB "mscuistf.dll" () AS INTEGER
  44. DECLARE FUNCTION Penguin LIB "mscuistf.dll" (sz$) AS INTEGER
  45. DECLARE FUNCTION UnPenguin LIB "mscuistf.dll" () AS INTEGER
  46. DECLARE FUNCTION Installed LIB "mscuistf.dll" () AS INTEGER
  47. DECLARE FUNCTION InstallDrive LIB "mscuistf.dll" () AS INTEGER
  48. DECLARE FUNCTION pmDeleteGroup LIB "mscuistf.dll" (szGroup$) AS INTEGER
  49. DECLARE FUNCTION pmDeleteItem LIB "mscuistf.dll" (szItem$) AS INTEGER
  50. DECLARE FUNCTION pmInitialize LIB "mscuistf.dll" () AS INTEGER
  51. DECLARE FUNCTION pmUninitialize LIB "mscuistf.dll" () AS INTEGER
  52. DECLARE FUNCTION Ostritch LIB "mscuistf.dll" (hWnd%) AS INTEGER
  53. DECLARE FUNCTION Parrot LIB "mscuistf.dll" (sz$) AS INTEGER
  54. DECLARE FUNCTION Budgie LIB "mscuistf.dll" (sz$) AS INTEGER
  55. DECLARE FUNCTION Duck LIB "mscuistf.dll" () AS INTEGER
  56. DECLARE FUNCTION Goose LIB "mscuistf.dll" () AS INTEGER
  57. DECLARE FUNCTION WinVersionCheck LIB "mscuistf.dll" () AS INTEGER
  58.  
  59. ''Bitmap ID
  60. CONST LOGO = 1
  61.  
  62. GLOBAL DEST$        ''Default destination directory.
  63. GLOBAL OPTCUR$      ''Option selection from option dialog.
  64. GLOBAL DOSDIR$
  65. GLOBAL Password$
  66. GLOBAL EXENAME$
  67. GLOBAL DLLNAME$
  68. GLOBAL DESTDIR$
  69. GLOBAL DESTDRIVE$
  70. GLOBAL EXITREASON%
  71. GLOBAL UserName$
  72.  
  73. DECLARE SUB Install
  74. DECLARE SUB UnInstall
  75. DECLARE SUB AddToRunLine
  76. DECLARE SUB RemoveFromRunLine
  77. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  78. DECLARE FUNCTION GetFileFromPath(szPath$) AS STRING
  79.  
  80. INIT:
  81.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  82.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  83.  
  84.     ' Maximize the background window
  85.  
  86.     hWnd%=HwndFrame()
  87.     i1&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  88.     j1%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  89.  
  90.     SetBitmap CUIDLL$, LOGO
  91.     SetTitle "SurfWatch"
  92.  
  93.     EXITREASON%=EXITSUCCESS
  94.  
  95.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  96.     IF szInf$ = "" THEN
  97.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SURF.INF"
  98.     END IF
  99.     ReadInfFile szInf$
  100.  
  101.     szLegal$ = GetSymbolValue("STF_SRCINFPATH")
  102.     IF szLegal$ = "" THEN
  103.         szLegal$ = GetSymbolValue("STF_CWDDIR") + "LEGAL.TXT"
  104.     END IF
  105.  
  106.     IF WinVersionCheck()=0 THEN
  107.         i% = DoMsgBox("This is the Windows 3.1 version of SurfWatch.  Please contact 415-948-9505 for Windows 95 upgrade information.","ERROR",MB_OK+MB_ICONSTOP)
  108.         END
  109.     END IF
  110.  
  111.     IF NOT EXISTS( szLegal$ ) THEN
  112.         i% = DoMsgBox("Cant open legal","ERROR",MB_OK)
  113.         GOTO QUIT
  114.     ENDIF
  115.  
  116.     OPTCUR$ = "1"
  117.     DESTDRIVE$ = "C"
  118.     DESTDIR$ = ":\CO_RO_NT"
  119.     DOSDIR$ = "c:\dos\"
  120.     EXENAME$ = "SURFW.EXE"
  121.     DLLNAME$ = "SWUTIL.DLL"
  122.     UserName$ = ""
  123.  
  124. WELCOME:
  125.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc",0,"")
  126.     IF sz$ = "REACTIVATE" THEN
  127.         GOTO WELCOME
  128.     ENDIF
  129.     UIPop 1
  130.  
  131. ' Check for reinstall
  132.  
  133.     IF Installed() THEN
  134.         hWnd%=HwndFrame()
  135.         IF Ostritch(hWnd%)=0 THEN
  136.             EXITREASON%=EXITNOCHANGE
  137.             GOTO QUIT
  138.         END IF
  139.     END IF
  140.     IF Installed() = 0 THEN
  141.         GOTO LEGAL
  142.     END IF
  143.     
  144. OPTION:
  145.     SetSymbolValue "RadioDefault", OPTCUR$
  146. OPTL1:
  147.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", 0, "")
  148.     OPTCUR$ = GetSymbolValue("ButtonChecked")
  149.     IF sz$ = "REACTIVATE" THEN
  150.         GOTO OPTL1
  151.     ENDIF
  152.     UIPop 1 
  153.  
  154.     IF OPTCUR$="2" THEN
  155.         GOTO DOUNINSTALL
  156.     ENDIF
  157.  
  158. LEGAL:
  159.     SetSymbolValue "EditTextIn" , szLegal$
  160. LEGAL1:
  161.     sz$ = UIStartDlg(CUIDLL$, LEGALSTUFF, "FLegalDlgProc", 0, "")
  162.     IF sz$ = "CONTINUE" THEN
  163.         UIPop 1
  164.     ELSEIF sz$ = "REACTIVATE" THEN
  165.         GOTO LEGAL1
  166.     ELSE
  167.         EXITREASON%=EXITQUIT
  168.         GOTO QUIT
  169.     ENDIF
  170.  
  171. DRIVECHECK:
  172.     Drive% = InstallDrive()
  173.     IF (Installed()) AND (Drive%<>-1) THEN
  174.         DESTDRIVE$=CHR$(Drive%+ASC("a"))
  175.     ELSE
  176.         GetLocalHardDrivesList("Drives")
  177.         NumDrives% = GetListLength("Drives")
  178.         IF NumDrives%>1 THEN
  179.             SetSymbolValue "ListItemsIn" , GetSymbolValue("Drives")
  180.             SetSymbolValue "ListItemsOut" , GetListItem("Drives",1)
  181. DRIVECHECK1:
  182.             sz$ = UIStartDlg(CUIDLL$, SELECTDRIVE, "FListDlgProc", 0,"")
  183.             IF sz$ = "CONTINUE" THEN
  184.                 UIPop 1
  185.                 DESTDRIVE$ = MID$(GetSymbolValue("ListItemsOut"),1,1)
  186.             ELSEIF sz$ = "REACTIVATE" THEN
  187.                 GOTO DRIVECHECK1
  188.             ELSE
  189.                 EXITREASON%=EXITQUIT
  190.                 GOTO QUIT
  191.             END IF
  192.         ENDIF
  193.     ENDIF
  194.     DEST$ = DESTDRIVE$ + DESTDIR$
  195.  
  196. USERNAME:
  197.     SetSymbolValue "EditTextIn" , ""
  198. USERNAME1:
  199.     sz$ = UIStartDlg(CUIDLL$, GETNAME, "FEditDlgProc", 0, "")
  200.     IF sz$ = "CONTINUE" THEN
  201.         UIPop 1
  202.     ELSEIF sz$ = "REACTIVATE" THEN
  203.         GOTO USERNAME1
  204.     ELSE
  205.         EXITREASON%=EXITQUIT
  206.         GOTO QUIT
  207.     END IF
  208.     UserName$ = GetSymbolValue( "EditTextOut" )
  209.  
  210. PASSWORD:
  211.     SetSymbolValue "EditTextIn", ""
  212. PASSWORD1:
  213.     sz$ = UIStartDlg(CUIDLL$, GETPASSWORD, "FEditDlgProc", 0, "")
  214.     IF sz$ = "CONTINUE" THEN
  215.         UIPop 1
  216.     ELSEIF sz$ = "REACTIVATE" THEN
  217.         GOTO PASSWORD1
  218.     ELSE
  219.         EXITREASON%=EXITQUIT
  220.         GOTO QUIT
  221.     END IF
  222.  
  223.     PassWord$ = GetSymbolValue("EditTextOut")
  224.     IF LEN(PassWord$) = 0 THEN
  225.         GOSUB BADPASSWORD
  226.         GOTO PASSWORD
  227.     ENDIF
  228.  
  229. PASSWORD2:
  230.     sz$ = UIStartDlg(CUIDLL$,CONFIRMPSSWRD,"FEditDlgProc", 0, "")
  231.     IF sz$ = "CONTINUE" THEN
  232.         UIPop 1
  233.     ELSEIF sz$ = "REACTIVATE" THEN
  234.         GOTO PASSWORD2
  235.     ELSE
  236.         EXITREASON%=EXITQUIT
  237.         GOTO QUIT
  238.     END IF
  239.  
  240.     IF PassWord$ = GetSymbolValue("EditTextOut") THEN
  241.         GOTO DOINSTALL
  242.     ELSE
  243. PASSWORD3:
  244.         sz$ = UIStartDlg(CUIDLL$,BADVERIFY,"FInfoDlgProc", 0, "")
  245.         IF sz$ = "CONTINUE" THEN
  246.             UIPop 1
  247.         ELSEIF sz$ = "REACTIVATE" THEN
  248.             GOTO PASSWORD3
  249.         ELSE
  250.             EXITREASON%=EXITQUIT
  251.             GOTO QUIT
  252.         END IF
  253.         GOTO PASSWORD
  254.     ENDIF
  255.  
  256.  
  257. DOINSTALL:
  258.     Install
  259.     Path$ = DEST$ + "\surfu.exe"
  260.     i%=WinExec(Path$,1)
  261. DOINSTALL2:
  262.     sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfo0DlgProc", 0, "")
  263.     IF sz$="REACTIVATE" THEN
  264.         GOTO DOINSTALL2
  265.     END IF
  266.     UIPop 1
  267.     END
  268.  
  269. DOUNINSTALL:
  270.     sz$ = UIStartDlg(CUIDLL$, REMOVER, "FInfoDlgProc", 0, "")
  271.     IF sz$="CONTINUE" THEN
  272.         UIPop 1
  273.     ELSEIF sz$="REACTIVATE" THEN
  274.         GOTO DOUNINSTALL
  275.     ELSE
  276.         UIPop 1
  277.         EXITREASON%=REMOVECANCEL
  278.         GOTO QUIT
  279.     END IF
  280.  
  281.     Drive%=InstallDrive()
  282.     IF Drive%<>-1 THEN
  283.         DESTDRIVE$=CHR$(Drive%+ASC("a"))
  284.     ENDIF
  285.  
  286.     DEST$ = DESTDRIVE$ + DESTDIR$
  287.  
  288.     Uninstall
  289.     sz$ = UIStartDlg(CUIDLL$, EXITUISUCCESS , "FInfo0DlgProc",0,"")
  290.     UIPop 1
  291.     END
  292.  
  293. QUIT:
  294.     ON ERROR GOTO ERRQUIT
  295.     dlg% = EXITREASON
  296.  
  297.     IF ERR THEN
  298.         dlg% = EXITFAILURE
  299.     END IF
  300. QUITL1:
  301.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  302.     IF sz$ = "REACTIVATE" THEN
  303.         GOTO QUITL1
  304.     END IF
  305.     UIPop 1
  306.  
  307.     END
  308.  
  309. ERRQUIT:
  310.     i% = DoMsgBox("Setup data corrupted, contact SurfWatch", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  311.     END
  312.  
  313. BADPASSWORD:
  314.     sz$ = UIStartDlg(CUIDLL$, BADPASSWORD, "FInfo0DlgProc", 0, "")
  315.     IF sz$ = "REACTIVATE" THEN
  316.         GOTO BADPASSWORD
  317.     END IF
  318.     UIPop 1
  319.     RETURN
  320.  
  321. '**
  322. '** Purpose:
  323. '**     Builds the copy list and performs all installation operations.
  324. '** Arguments:
  325. '**     none.
  326. '** Returns:
  327. '**     none.
  328. '*************************************************************************
  329. SUB Install STATIC
  330.  
  331.     i% = KSW()
  332.     i%= KSU()
  333.  
  334.     i%=Parrot(DEST$)
  335.  
  336.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  337.     CreateDir DEST$, cmoNone
  338.  
  339.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  340.     CopyFilesInCopyList
  341.  
  342.     SysDir$ = GetWindowsSysDir()
  343.     Ctl3d$ = SysDir$ + "ctl3d.dll" 
  344.  
  345.     IF NOT EXISTS (Ctl3d$) THEN
  346.         ClearCopyList
  347.         AddSectionFilesToCopyList "SYSTEM", SrcDir$ , SysDir$
  348.         CopyFilesInCopyList
  349.     END IF
  350.  
  351.     FileSpec$ = DEST$ + "\surfw.dat"
  352.     IF EXISTS( FileSpec$ ) THEN
  353.         RemoveFile FileSpec$, cmoNone
  354.     END IF
  355.  
  356.     AddToRunLine
  357.  
  358.     i% = encrypt(PassWord$)
  359.     PassWord$ = PassWord$
  360.     IniFile$ = GetWindowsDir() + "SURFW.INI"
  361.     CreateIniKeyValue IniFile$,"SurfWatch","Owner",UserName$,cmoOverwrite
  362.     CreateIniKeyValue IniFile$,"SurfWatch","Entry",PassWord$,cmoOverwrite
  363.  
  364.     i%=Budgie(DEST$)
  365.     i%=Penguin(DEST$)
  366.  
  367.     CreateProgmanGroup "startup","",cmoNone
  368.     ShowProgmanGroup "startup",6,cmoNone
  369.     Path$ = DEST$ + "\surfu.exe -s"
  370.     CreateProgmanItem "startup","SurfWatch Updater",Path$,"",cmoOverwrite
  371.     Path$ = DEST$ + "\surfw.exe"
  372.     CreateProgmanItem "startup","SurfWatch",Path$,"",cmoOverwrite
  373.  
  374.     ' Run SurfWatch
  375.  
  376.     SurfW$ = DEST$ + "\" + EXENAME$
  377.     i%=WinExec(SurfW$,0)
  378.  
  379. END SUB
  380.  
  381. '**
  382. '** Purpose:
  383. '**     Builds the copy list and performs all installation operations.
  384. '** Arguments:
  385. '**     none.
  386. '** Returns:
  387. '**     none.
  388. '*************************************************************************
  389. SUB UnInstall STATIC
  390.  
  391.     i% = KSW()
  392.     i% = KSU()
  393.  
  394.     i%=Parrot(DEST$)
  395.     i%=Duck()
  396.  
  397.     ' Erase all the files in the install directory
  398.  
  399.     KillFileStr$ = DEST$ + "\*.*"
  400.     IF EXISTS(KillFileStr$) THEN
  401.         KILL KillFileStr$
  402.     ENDIF
  403.  
  404.  
  405.     TempDir$ = DESTDRIVE$ + ":\"
  406.  
  407.     CHDIR TempDir$
  408.  
  409.     IF DoesDirExist(DEST$) THEN
  410.         RMDIR DEST$
  411.     ENDIF
  412.  
  413.     i%=Goose()
  414.  
  415.     RemoveFromRunLine
  416.  
  417.     i%=UnPenguin()
  418.  
  419.     ' Erase surfw.ini
  420.  
  421.     IniFile$ = GetWindowsDir() + "SURFW.INI"
  422.     IF DoesFileExist (IniFile$,femExists) THEN
  423.         RemoveFile IniFile$, cmoNone
  424.     ENDIF
  425.  
  426.     IF pmInitialize() THEN
  427.         CreateProgmanGroup "startup","",cmoNone
  428.         i% = pmDeleteItem("SurfWatch Updater")
  429.         i% = pmDeleteItem("SurfWatch")
  430.         i% = pmUninitialize()
  431.     ELSE
  432.         i%=DoMsgBox("Unable to remove Program Manager Items","SurfWatch Updater",MB_OK)
  433.     ENDIF
  434.  
  435. END SUB
  436.  
  437. '**
  438. '** Purpose:
  439. '**     Appends a file name to the end of a directory path,
  440. '**     inserting a backslash character as needed.
  441. '** Arguments:
  442. '**     szDir$  - full directory path (with optional ending "\")
  443. '**     szFile$ - filename to append to directory
  444. '** Returns:
  445. '**     Resulting fully qualified path name.
  446. '*************************************************************************
  447. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  448.     IF szDir$ = "" THEN
  449.         MakePath = szFile$
  450.     ELSEIF szFile$ = "" THEN
  451.         MakePath = szDir$
  452.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  453.         MakePath = szDir$ + szFile$
  454.     ELSE
  455.         MakePath = szDir$ + "\" + szFile$
  456.     END IF
  457. END FUNCTION
  458.  
  459. FUNCTION GetFileFromPath(szPath$) STATIC AS STRING
  460.     ' Find the last \
  461.     FOR i = LEN(szPath$) TO 1 STEP -1
  462.         IF MID$(szPath$,i,1)="\" THEN
  463.             GetFileFromPath = MID$(szPath,i+1)
  464.             i = 1
  465.         END IF
  466.     NEXT i
  467. END FUNCTION
  468.  
  469. SUB AddToRunLine STATIC
  470.     RemoveFromRunLine
  471.     SurfW$ = DEST$ + "\" + EXENAME$
  472.     RunStr$ = GetIniKeyString( "WIN.INI", "windows", "load" )
  473.     RunStr$ = RunStr$ + " " + SurfW$
  474.     CreateIniKeyValue "WIN.INI", "windows" , "load" , RunStr$ , cmoOverwrite
  475. END SUB
  476.  
  477. SUB RemoveFromRunLine STATIC
  478.     SurfW$ = DESTDIR$ + "\" + EXENAME$
  479.     RunStr$ = GetIniKeyString( "WIN.INI", "windows", "load" )
  480.     i% = INSTR( RunStr$ , SurfW$ )
  481.     IF NOT i%=0 THEN
  482.         i%=i%-1
  483.         SurfW$ = DESTDIR$ + "\" + EXENAME$
  484.         Temp$ = MID$( RunStr$ , 1 , i%-1 )
  485.         i% = i% + LEN( SurfW$ )
  486.         IF i%<LEN( RunStr$ ) THEN
  487.             Temp$ = Temp$ + MID$( RunStr$ , i% )
  488.         ENDIF
  489.         CreateIniKeyValue "WIN.INI","windows","load",Temp$,cmoOverwrite
  490.     ENDIF
  491. END SUB
  492.